#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include "msgQLib.h" 
  
#include "config.h"
#include "tacheTraitementMessages.h"


int TraitementMessages(MSG_Q_ID idBalLogs, MSG_Q_ID idBalIHM)
{
	FILE *file;
	init(&file);
	moteur_TraitementMessages(idBalLogs,idBalIHM,file);
}

// phase d'initialisation de la tache traitement messages
void init(FILE **file){
	*file = fopen("logKST.txt", "w+");
	if (file == NULL) {
		printf("ERREUR : Ouverture du fichier log impossible.");
	}
}


// phase moteur de la tache
void moteur_TraitementMessages(MSG_Q_ID idBalLogs, MSG_Q_ID idBalIHM,FILE *file)
{
	char buffer[100];
	for(;;)
	{
		MESSAGE_LOG_ERR message;
		
		// on attend le message dans la bal
		msgQReceive(idBalLogs, (char*) &message, sizeof(MESSAGE_LOG_ERR), WAIT_FOREVER);
		
		// Si le message est un message d'arret de l'application
		if (message.type == LOG_EXIT)
		{
			printf("Fermeture de l'application.\n");
			fprintf(file,"%s\n","Fermeture de l'application");
			fclose(file);
			return;
		}
		
		// si le message est un log normal
		if (message.type == LOG_NORMAL)
		{
			fprintf(file,"%d-%d-%d %d:%d:%d [OK] %s\n",message.jour, message.mois, message.annee, message.h, message.min, message.sec, message.message);
		}

		// si le message est une erreur
		if (message.type == MESS_ERREUR)
		{
			fprintf(file,"%d-%d-%d %d:%d:%d [ERROR] %s\n",message.jour, message.mois, message.annee, message.h, message.min, message.sec, message.message);
		}
		
		// Affichage du contenu du fichier log 
		printf("\n\n--------- Contenu du fichier log : ------------\n");
		rewind(file);
		while (fgets(buffer, 100, file) != NULL) // On lit le fichier tant qu'on ne re�oit pas d'erreur (NULL)
		{
		    printf("%s", buffer); // On affiche la cha�ne qu'on vient de lire
		}
		printf("------------- Fin fichier log -----------------\n\n");

	}
}
